package com.strategy;
/**
 * 
 * @author xinlin
 *	策略模式：它定义了算法家族，分别封装起来，让他们之间可以相互替换，此模式让算法的变化，不会影响到使用算法的客户
 *	封装了变化
 *  实践中，可以用它来封装几乎任何类型的规则，只要在分析过程中听到需要在不同时间应用不同的业务规则，就可以考虑使用策略模式处理这种变化的可能性
 */
public abstract class Readme {
/**
 * abstract class Strategy {
 * 		public abstract void AlgorithmInterface();
 * }
 * 
 * class ConcretestrategyA extends Strategy {
 * 	public override void AlgorithmInterface(){
 * 		System.out.println("算法A实现");
 *  }
 * }
 * 
 * class ConcreteStrategyB extends Strategy{
 * 		public override void AlgorithmInterface(){
 * 			System.out.println("算法B实现");
 * 		}
 * }
 *
 * class ConcreteStrategyC extends Strategy{
 * 		public override void AlgorithmInterface(){
 * 			System.out.println("算法C实现");
 * 		}
 * }
 * 
 * 
 * class Context {
 * 	Strategy strategy;
 *  //初始化时，传入具体的策略对象
 * 	public Context(Strategy strategy){
 * 		this.strategy = strategy;
 *  }
 *  //上下文接口
 *  //根据具体的策略对象，调用其算法的方法
 *  public void ContextInterface(){
 *  	strategy.AlgorithmInterface();
 * }
 * 
 * 
 * //客户端代码
 * public static main(String args[]){
 * 	Context context;
 *  context = new Context(new ConcreteStrategyA());
 *  context.ContextInterface();
 *  
 *  context = new Context(new ConcreteStrategyB());
 *  context.ContextInterface();
 *  
 *  context = new Context(new ConcreteStrategyC());
 *  context.ContextInterface();
 *  
 *  }
 * }
 * 
 * 
 
 
 */

}
